import 'dart:async';
import 'dart:io';

import 'package:aio/aio.dart';
import 'package:flutter/cupertino.dart';
import 'package:app/src/config/app_data_config.dart';
import 'package:app/src/http/bean/wroks/contract_bean.dart';
import 'package:app/src/http/bean/wroks/search_bean.dart';
import 'package:app/src/manager/audit_manager.dart';
import 'package:app/src/ui/app_ui.dart';
import 'package:app/src/http/bean/http_data.dart';
import 'package:app/src/http/bean/user.dart';
import 'package:app/src/http/bean/ywx_count.dart';
import 'package:app/src/http/bean/ywx_limit.dart';
import 'package:app/src/http/sign.dart';
import 'package:app/src/http/url.dart';
import 'package:app/src/manager/user_manager.dart';
import 'package:app/src/manager/ywx_manager.dart';
import 'package:app/src/ui/dialog/dailog.dart';

///待审核数据(消息通知列表)
class TodoReviewModel {
  // static var num = "0"; //待审核数量
  static YwxItemNotice? newNotice = null; //当前最新的消息
  ///fixme 获取待审核列表数据
  ///ReviewType 审核类型
  ///PageNo 页码,从0开始。
  ///PageSize 每页显示条目数量
  ///searchInfo 搜索条件
  static Future<AppHttpResult<List<YwxItemNotice>, YwxItemNotice>?>?
      getTdogetlist(BuildContext? context, bool isEnableLoad,
          {String? ReviewType,
          String? PageNo = "0",
          String? PageSize = "15",
          SearchInfo? searchInfo,
          bool isEquipmentInfo = false}) async {
    if (UserManager.getUserInfo() == null) {
      //fixme 判断用户是否登陆
      return null;
    }
    // print(
    //     "=====================================================================刷新待审核列表数据");
    Completer completer =
        new Completer<AppHttpResult<List<YwxItemNotice>, YwxItemNotice>?>();
    var url = Url.baseurl() + Url.AjaxMessage;
    //var url = "http://masapp.zuvowf.com/" + Url.AjaxMessage;//测试服务器访问受限制，数据返回为空。
    //var url = "http://masapp123.zuvowf.com/" + Url.AjaxMessage;
    var token = AppDataConfig.getToken();
    var subData = SubData();
    subData.commondata = CommonData();
    subData.ReviewType = ReviewType;
    subData.PageNo = PageNo;
    subData.PageSize = PageSize!;
    subData.InsertStartDatetime = searchInfo?.InsertStartDatetime; //开始时间
    subData.InsertEndDatetime = searchInfo?.InsertEndDatetime; //结束时间
    //subData.businessdata = searchInfo?.getContractCopyInfo();
    subData.businessdata = searchInfo;
    subData.isEquipmentInfo = isEquipmentInfo; //是否返回工单中心的数据。
    var queryParameters = Map<String, dynamic>();
    queryParameters['data'] = subData.jsonEncodeToJson();
    // print('提交数据：${ subData.jsonEncodeToJson()}');
    var sign = getSign(queryParameters);
    queryParameters['sign'] = sign;
    //print('签名：$sign');
    KOhttp(url)
      ..isEnableLoad(isEnableLoad, context)
      // ..onStart(() {
      //   print('开始');
      // })
      ..onError((code, error) {
        // print('错误:\t$code\t$error');
        if (isEnableLoad) {
          AppDialog.showDialogWithError(context, code, error);
        }
      })
      ..onSuccess((result) {
        if (StringUtils.isEmpty(result)) {
          completer.complete(null);
        }
        // PrintUtils.printlnLong('待审核列表数据=================================================================成功:\n$result');
      })
      // ..onFinish(() {
      //   print('结束');
      // })
      ..isCache(false)
      ..addHeader('token', token)
      ..addFormDatas(queryParameters)
      ..contentType = ContentType.form
      ..isAllowedRepeat = true
      ..isEnableLog = AppDataConfig.isEnableLog
      ..postASync<AppHttpResult<List<YwxItemNotice>, YwxItemNotice>>(
              AppHttpResult()
                ..Data = <YwxItemNotice>[]
                ..t2 = YwxItemNotice())
          ?.then((result) {
        // //fixme 模拟测试数据
        // AppHttpResult<List<YwxItemNotice>, YwxItemNotice> result =
        //     AppHttpResult()
        //       ..Data = <YwxItemNotice>[]
        //       ..t2 = YwxItemNotice();
        // parseJson(_json, result);
        //fixme 筛选当前已有的审核
        // List<YwxItemNotice> datas = [];
        // int? inMilliseconds = null;
        // result.Data?.forEach((element) {
        //   if (element.getYwxItem(context) != null) {
        //     //根据时间差最小，选出最新的消息。
        //     if (PageNo == "0") {
        //       var duration = element.distanceTime();
        //       if (duration != null) {
        //         if (inMilliseconds == null) {
        //           inMilliseconds = duration.inMilliseconds;
        //           newNotice = element;
        //         } else {
        //           if (duration.inMilliseconds < inMilliseconds!) {
        //             inMilliseconds = duration.inMilliseconds;
        //             newNotice = element;
        //           }
        //         }
        //       }
        //     }
        //     datas.add(element);
        //   }
        // });
        //result.Data = datas;
        var datas = result.Data;
        // 待审核数据个数：	15
        // 待审核返回数据个数：	1 总数：1
        // 待审核返回数据个数：	1157 总数：1157
        // result!.TotalNum 这里的总数，没有意义，没有返回实际待审核的总数，而是就是当前返回数据的个数。
        // print(
        //     "待审核返回数据个数：\t${datas?.length} 总数：${result!.TotalNum!.toString()}");
        if (datas != null) {
          if (PageNo == "0") {
            if (datas.length <= 0) {
              newNotice = null;
            } else if (datas.length >= 1) {
              newNotice = datas[0]; //fixme 最新的消息，取首页第一条。
            } else {}
          }
          // num = datas.length.toString();
          // if (result?.TotalNum != null) {
          //   if (result!.TotalNum >= datas.length) {
          //     num = result!.TotalNum!.toString();
          //   }
          // }
        } else {
          if (PageNo == "0") {
            newNotice = null;
          }
        }

        //print("=================================================================个数:$num\tReviewType：$ReviewType");
        completer.complete(result);
      });
    return completer.future
        as Future<AppHttpResult<List<YwxItemNotice>, YwxItemNotice>?>;
  }
}

///测试模拟数据
// String _json = '''
// {
// 	"IsSuccess": true,
// 	"MsgDetail": "数据获取成功",
// 	"MsgCode": 100,
// 	"cnt": 22675,
// 	"Data": [{
// 		"ReviewTypeId": "1576",
// 		"InsertDatetime": "2022/07/18 13:59:31",
// 		"ReviewType": "Contract",
// 		"YwxId": "H0001_4",
// 		"YwxName": "合同审核(总经理)",
// 		"IsApproval": false,
// 		"ReviewTypeName": "HT20220718002",
// 		"StatusName": "待审核",
// 		"ProjectName": "A字架",
// 		"CustomerName": "#!广东世纪达装饰工程有限公司",
// 		"SalesmanName": "罗志祥",
// 		"MerchandiserName": "罗志祥"
// 	}, {
// 		"ReviewTypeId": "41315",
// 		"InsertDatetime": "2022/07/18 13:54:43",
// 		"ReviewType": "Order",
// 		"YwxId": "N4004_2",
// 		"YwxName": "订单审核(主管审批)",
// 		"IsApproval": false,
// 		"ReviewTypeName": "R20220718001",
// 		"StatusName": "待审核",
// 		"ProjectName": "#!广东世纪达装饰工程有限公司的直接下单合同",
// 		"CustomerName": "0718",
// 		"SalesmanName": "罗志祥",
// 		"MerchandiserName": "罗志祥"
// 	}, {
// 		"ReviewTypeId": "41312",
// 		"InsertDatetime": "2022/07/07 17:24:55",
// 		"ReviewType": "Order",
// 		"YwxId": "N4004_1",
// 		"YwxName": "订单审核(部门互审)",
// 		"IsApproval": false,
// 		"ReviewTypeName": "R20220707002",
// 		"StatusName": "待审核",
// 		"ProjectName": "#!苍南信用社（钟）的直接下单合同",
// 		"CustomerName": "1",
// 		"SalesmanName": "王贤明1",
// 		"MerchandiserName": "童健力"
// 	}, {
// 		"ReviewTypeId": "41271",
// 		"InsertDatetime": "2022/06/14 13:34:29",
// 		"ReviewType": "Order",
// 		"YwxId": "N4004_1",
// 		"YwxName": "订单审核(部门互审)",
// 		"IsApproval": false,
// 		"ReviewTypeName": "R20220608002",
// 		"StatusName": "待审核",
// 		"ProjectName": "夹胶中空测试",
// 		"CustomerName": "10",
// 		"SalesmanName": "王鑫泽",
// 		"MerchandiserName": "王鑫泽"
// 	}, {
// 		"ReviewTypeId": "41272",
// 		"InsertDatetime": "2022/06/14 13:30:46",
// 		"ReviewType": "Order",
// 		"YwxId": "N4004_1",
// 		"YwxName": "订单审核(部门互审)",
// 		"IsApproval": false,
// 		"ReviewTypeName": "R20220608003",
// 		"StatusName": "待审核",
// 		"ProjectName": "夹胶中空测试",
// 		"CustomerName": "10",
// 		"SalesmanName": "王鑫泽",
// 		"MerchandiserName": "王鑫泽"
// 	}, {
// 		"ReviewTypeId": "40971",
// 		"InsertDatetime": "2022/06/14 10:52:14",
// 		"ReviewType": "Order",
// 		"YwxId": "N4004_1",
// 		"YwxName": "订单审核(部门互审)",
// 		"IsApproval": false,
// 		"ReviewTypeName": "R20220105006",
// 		"StatusName": "待审核",
// 		"ProjectName": "#!佳兴的直接下单合同",
// 		"CustomerName": "3",
// 		"SalesmanName": "柳有波",
// 		"MerchandiserName": "王尚文"
// 	}, {
// 		"ReviewTypeId": "41021",
// 		"InsertDatetime": "2022/06/14 10:44:41",
// 		"ReviewType": "Order",
// 		"YwxId": "N4004_1",
// 		"YwxName": "订单审核(部门互审)",
// 		"IsApproval": false,
// 		"ReviewTypeName": "R20220126002",
// 		"StatusName": "待审核",
// 		"ProjectName": "#!零星奚新江的直接下单合同",
// 		"CustomerName": "12",
// 		"SalesmanName": "KY",
// 		"MerchandiserName": "柳有波"
// 	}, {
// 		"ReviewTypeId": "3424",
// 		"InsertDatetime": "2022/06/10 9:53:25",
// 		"ReviewType": "Order",
// 		"YwxId": "N4004_2",
// 		"YwxName": "订单审核(主管审批)",
// 		"IsApproval": true,
// 		"ReviewTypeName": "R20150814014",
// 		"StatusName": "已审核",
// 		"ProjectName": "宁波甬江东岸5-8门窗玻璃",
// 		"CustomerName": "",
// 		"SalesmanName": "朱高怀",
// 		"MerchandiserName": "杨梦丽"
// 	}, {
// 		"ReviewTypeId": "41275",
// 		"InsertDatetime": "2022/06/09 22:15:01",
// 		"ReviewType": "Order",
// 		"YwxId": "N4004_1",
// 		"YwxName": "订单审核(部门互审)",
// 		"IsApproval": false,
// 		"ReviewTypeName": "R20220609001",
// 		"StatusName": "待审核",
// 		"ProjectName": "测试开票",
// 		"CustomerName": "5+56(聚硫胶)+6(--)客户",
// 		"SalesmanName": "王尚文",
// 		"MerchandiserName": "王尚文"
// 	}, {
// 		"ReviewTypeId": "3421",
// 		"InsertDatetime": "2022/06/09 22:14:16",
// 		"ReviewType": "Order",
// 		"YwxId": "N4004_2",
// 		"YwxName": "订单审核(主管审批)",
// 		"IsApproval": true,
// 		"ReviewTypeName": "R20150814011",
// 		"StatusName": "已审核",
// 		"ProjectName": "宁波甬江东岸5-8门窗玻璃",
// 		"CustomerName": "",
// 		"SalesmanName": "朱高怀",
// 		"MerchandiserName": "杨梦丽"
// 	}]
// }
// ''';
